home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / PRUS101.ZIP / FCONDRV.DOC < prev    next >
Text File  |  1994-08-04  |  6KB  |  130 lines

  1.  
  2.  
  3.                                                       Paul Schubert
  4.                                                       Rottweiler Str. 8
  5.                                                D60327 Frankfurt / M
  6.                                                       Tel.: 069 / 231145
  7.                                                       Fido 2:244/1181.18
  8.  
  9.  
  10.     Beschreibung der UNIT FCONDRV
  11.     ─────────────────────────────
  12.  
  13.   FCONDRV entstand im Zuge des PRUSSG Projekts.
  14.   Es ging mir hauptsächlich darum, daß ich nicht auf den Komfort der
  15. Ausgabeformatierung mittels WRITE() verzichten, aber dafür nicht von CRT
  16. abhängig sein wollte.
  17.  
  18.   FCONDRV enthält hauptsächlich einen CON: Treiber für WRITE(), der direkt
  19. auf den Textmodus Videospeicher zugreift. Es hat sich ergeben, daß einige
  20. Prozeduren aus CRT in einem so engen Zusammenhang mit diesem Treiber
  21. stehen, daß sie unbedingt mit in der Unit integriert sein müssen.
  22.   Ebenso wollte ich nicht auf WINDOW verzichten, welches somit auch
  23. in FCONDRV enthalten ist. Es hat sich gezeigt, daß es einige sehr leicht
  24. zu programmierende aber extrem nützliche Zusätze zu den CRT Funktionen
  25. gibt, die ich sogleich mit einfließen ließ.
  26.  
  27.   Derzeit kann FCONDRV nur direkt ins Videoram schreiben, die UNIT
  28. bietet aber die Möglichkeit, sowohl eine BIOS Ausgabe als auch einige
  29. andere nützliche Dinge zu implementieren - insbesondere denke ich da an
  30. Terminal Emulationen bzw. einen extrem schnellen Treiber, der zwar
  31. <cr> und <lf> nicht beachtet, dafür aber etwa 4 mal so schnell ausgibt.
  32.  
  33.   Ich habe großen Wert darauf gelegt, daß FCONDRV mit allen Text Videomodi
  34. zurecht kommt, die korrekte Werte ins BIOS RAM auf $40:0... eintragen
  35. und auch problemlos gemischt mit BIOS Ausgabefunktionen und im Betrieb
  36. mit bis zu 8 Bildschirmseiten arbeiten kann. Sollte dies an der einen
  37. oder anderen Stelle nicht gelungen sein, bitte ich darum, mich sofort
  38. zu benachrichtigen.
  39.   Es ist recht unwahrscheinlich, daß es vom BIOS einstellbare Text
  40. Videomodi gibt, die die Einträge im BIOS RAM nicht aktualisieren, weil
  41. das Video BIOS sonst selbst nicht richtig auf den Bildschirm schreiben
  42. könnte. Wer unbedingt 'tweaked' Textmodi benutzen will, die durch
  43. direkte Registerprogrammierung der VGA eingestellt werden, der muß
  44. leider sowohl auf die Textausgabe mittels BIOS als auch mittels FCONDRV
  45. verzichten.
  46.   Eventuell kann FCONDRV auch in tweaked Textmodi ( z.B. für Softscrolling )
  47. verwandt werden, wenn nach dem Umprogrammieren des CRT Controllers die
  48. aktuellen Werte im BIOS RAM eingetragen werden und danach REINITCRT
  49. aufgerufen wird.
  50.  
  51.  
  52.   FCONDRV ersetzt folgende CRT Prozeduren, Funktionen und Variablen :
  53.  
  54. TEXTATTR       : BYTE = 7;
  55.   Enthält das Textattribut zum Schreiben via WRITE()
  56.  
  57. WINDMIN        : WORD = 0;
  58. WINDMAX        : WORD = 24 SHL 8 + 79;
  59.   Enthält die aktuellen Fensterkoordinaten
  60.  
  61. DIRECTVIDEO    : BOOLEAN = TRUE;
  62.   Ist DIRECTVIDEO = TRUE, wird ohne BIOS in den Bildschirmspeicher
  63. geschrieben, bei DIRECTVIDEO := FALSE; wird über die Video BIOS
  64. Funktionen geschrieben.
  65. Letzteres hat vor allem den Vorteil, daß die Textausgabe auch in den
  66. Grafik Videomodi ( außer 'tweaked' Modi ) funktioniert. Es birgt aber
  67. einen Nachteil : Die Lösch- und Scrollfunktionen funktionieren nur
  68. auf Videopage 0 ! Dieser Nachteil ist in der Funktion des Video BIOS
  69. begründet.
  70.  
  71. PROCEDURE CASSIGN(VAR F:TEXT);
  72.   Entspricht etwa ASSIGNCRT aus CRT, muß aber wie folgt benutzt werden :
  73. CASSIGN(OUTPUT);
  74. REWRITE(OUTPUT);
  75.   Daß die Filevariable angegeben werden muß, hat m.e. den Vorteil, daß
  76. sich auch andere Files als OUTPUT zuweisen lassen.
  77.  
  78.   Folgende Prozeduren und Funktionen arbeiten mit WINDOW zusammen :
  79.  
  80. PROCEDURE WINDOW(X1,Y1,X2,Y2:BYTE);
  81. PROCEDURE CLRSCR;
  82. PROCEDURE GOTOXY(X,Y:BYTE);
  83. FUNCTION  WHEREX:BYTE;
  84. FUNCTION  WHEREY:BYTE;
  85. PROCEDURE CLREOL;
  86.   Die Funktionen entsprechen denen von CRT, ich muß aber anmerken, daß
  87. GOTOXY nicht überprüft, ob die angegebene Cursorposition außerhalb des
  88. WINDOWs liegt.
  89.   WINDOW dürfte nicht korrekt mit mehreren Bildschirmseiten zusammen
  90. arbeiten - es gibt nur 1 WINDOW, auf das sich die Ausgaben in der
  91. aktuellen Bildschirmseite beziehen. Sollten separate WINDOWs für jede
  92. Bildschirmseite wünschenswert sein, bitte ich um Benachrichtigung.
  93.  
  94.   Einige Prozeduren habe ich selbst definiert :
  95. PROCEDURE CLREOS;
  96.   Clear to End of Screen - ähnlich CLREOL, löscht ab der Cursorposition
  97. bis zum Ende des durch WINDOW eingestellten Fensters.
  98.  
  99. PROCEDURE REINITCRT;
  100.   Da FCONDRV mit verschiedenen Videomodi arbeiten kann, ist es nötig,
  101. nach Ändern des Videomodus REINITCRT aufzurufen, damit FCONDRV sich auf
  102. den neuen Videomodus einstellen kann.
  103.  
  104. PROCEDURE PUSHWINDOW;
  105. PROCEDURE POPWINDOW;
  106.   Diese Prozeduren können Fensterinhalte auf den Heap speichern bzw.
  107. vom Heap restaurieren - sie können mehrmals hintereinander benutz werden
  108. und arbeiten nach dem First In First Out Prinzip.
  109.   Gespeichert wird jeweils der Bildschirminhalt des aktuellen durch
  110. WINDOW eingestellten Fensters.
  111.   PUSHWINDOW und POPWINDOW arbeiten immer auf der Aktuellen Bildschirmseite,
  112. sodaß es möglich ist, damit Bildschirminhalte von einer Seite auf eine
  113. andere zu kopieren.
  114.  
  115.   Folgende Prozeduren und Funktionen arbeiten unabhängig vom WINDOW immer
  116. auf den gesamten Bildschirm bezogen :
  117.  
  118. PROCEDURE CLRSCRABSOLUTE;
  119.   Entspricht CLRSCR - löscht immer den ganzen Bildschirm
  120.  
  121. PROCEDURE GOTOXYABSOLUTE(X,Y:BYTE);
  122.   Entspricht GOTOXY, positioniert den Cursor immer relativ zur oberen
  123. linken Bildschirmecke.
  124.  
  125. FUNCTION  WHEREXABSOLUTE:BYTE;
  126. FUNCTION  WHEREYABSOLUTE:BYTE;
  127.   Entsprechen WHEREX und WHEREY, liefern immer die Cursorposition relativ
  128. zur linken oberen Bildschirmecke.
  129.  
  130.